<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var p = {
            id: 7748,
            name: 'sam',
            age: 20,
            time: new Date()
        }
        // console.log(p);
        var arr = Object.keys(p);//获取所有属性名，返回为一个数组 可枚举
        // console.log(arr.length);//4

        var map = new Map();

        map.set('id', 1001);//不存在即添加
        map.set('name', 'sam');
        map.set('time', new Date());
        map.set('id', 1002);//存在即修改
        var fn = function () { };
        map.set(fn, 8888);
        map.set(p, '这个键是对象');

        // console.log(map);
        // console.log(map.size);//键的个数
        // map.delete('id')//删除键
        // console.log(map.has('id'));//false
        // map.clear()//清空map

        //获取键的值
        // console.log(map.get('id'));//1002
        // console.log(map.get(fn));//8888
        // console.log(map.get(p));//这个键是对象

        //1 遍历
        let iterator1 = map.keys();//获取所有键的集合
        // console.log(iterator1);//{'id', 'name', 'time', ƒ, {…}}

        // 输出map所有键的值
        // console.log(iterator1.next().value);
        // console.log(iterator1.next().value);
        // console.log(iterator1.next().value);
        // console.log(iterator1.next().value);
        // console.log(iterator1.next().value);

        let value;
        // 遍历map所有键的值
        while (value = iterator1.next().value) {
            // console.log(value);
        }

        // console.log(map.values());//获取map值的集合{1002, 'sam', Thu May 09 2024 15:45:18 GMT+0800 (中国标准时间), 8888, '这个键是对象'}

        //遍历1
        map.forEach(function (value, key) {
            // console.log(key, value);
        })

        //遍历2 of的对象解构
        for (let obj of map) {//对象解构
            // console.log(obj[0], obj[1]);
        }

        // 遍历3 of的数组解构
        for (let [k, v] of map) {
            console.log(k, v);
        }

        var arr3 = Object.entries(p)// 对象 转 数组
        console.log(arr3);


        let [...arr2] = map;// map 转 数组
        console.log(arr2);

        var m = new Map(arr2);// 数组 转 map
        console.log(map);
    </script>
</body>

</html>